{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import tensorflow as tf\n",
    "\n",
    "import datetime\n",
    "\n",
    "import gym\n",
    "import trading_env\n",
    "\n",
    "import os\n",
    "import agent \n",
    "from os import __file__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading historical data file\n"
     ]
    },
    {
     "data": {
      "image/png": "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\ncswQDZHOPQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd36e44e2e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "env_trading = gym.make('test_trading-v0')\n",
    "NUM_EP = 400\n",
    "date = datetime.datetime(2017, 7, 10, 0, 0)\n",
    "data = env_trading.historical_data[\"close\"]\n",
    "env_trading.reset(date=date)\n",
    "plt.plot(data[env_trading.start_index:env_trading.start_index + int(env_trading.episode_steps) \n",
    "              if env_trading.start_index + int(env_trading.episode_steps) < data.shape[0]\n",
    "             else data.shape[0]])\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading historical data file\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd36e44e828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "env_trading_test = gym.make('test_trading-v0')\n",
    "date_test = datetime.datetime(2017, 8, 10, 0, 0)\n",
    "data = env_trading_test.historical_data[\"close\"]\n",
    "env_trading_test.reset(date=date_test)\n",
    "plt.plot(data[env_trading_test.start_index:env_trading_test.start_index + int(env_trading_test.episode_steps) \n",
    "              if env_trading_test.start_index + int(env_trading_test.episode_steps) < data.shape[0]\n",
    "             else data.shape[0]])\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Goal\n",
    "Have a better cumulated reward and final portfolio value than the three following agents:\n",
    "- The \"holder\" (action = 1)\n",
    "- The \"All out\" (action = -1)\n",
    "- The \"I have no idea what I am doing\" (random action)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Holder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "state = env_trading.reset(date=date)\n",
    "total_reward = 0\n",
    "\n",
    "while(True):\n",
    "    action = 1.0 #Holder agent\n",
    "    state, reward, done, _ = env_trading.step(action)\n",
    "    total_reward += reward\n",
    "    if done:\n",
    "        break\n",
    "holder_reward = np.full(NUM_EP, total_reward)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "state = env_trading.reset(date=date)\n",
    "total_reward = 0\n",
    "\n",
    "while(True):\n",
    "    action = env_trading.action_space.sample()\n",
    "    state, reward, done, _ = env_trading.step(action)\n",
    "    total_reward += reward\n",
    "    if done:  \n",
    "        break\n",
    "random_reward = np.full(NUM_EP, total_reward)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# All out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "out_reward = np.full(NUM_EP, 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The Agent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Stochastic Policy Gradient"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "agentSPG = agent.StochasticPolicyGradientAgent(env_trading, learning_rate = 1e-4, \n",
    "                                               discount_rate = 0.99, batch_size = 64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "rewards_plot = []\n",
    "portfolio = []\n",
    "for i in range(NUM_EP):\n",
    "    state = env_trading.reset(date=date)\n",
    "    state = np.reshape(state,200)\n",
    "    total_reward = 0\n",
    "    \n",
    "    while(True):\n",
    "        action = agentSPG.act([state])\n",
    "        print(action)\n",
    "        state, reward, done, _ = env_trading.step(action)\n",
    "        state = np.reshape(state,200)\n",
    "        agentSPG.store_step(action, state, reward)\n",
    "        total_reward += reward\n",
    "        if done:\n",
    "            rewards_plot.append(total_reward)\n",
    "            portfolio.append(env_trading.portfolio_value)\n",
    "            print(\"Episode: {}, Total reward: {}\".format(i,total_reward))\n",
    "            break\n",
    "    agentSPG.train()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(rewards_plot, label = \"Trained agent\")\n",
    "plt.plot(holder_reward, label = \"Holder\")\n",
    "plt.plot(random_reward, label = \"Random\")\n",
    "plt.plot(out_reward, label = \"All out\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Deep Q Network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "agentDQN = agent.DQNAgent(env_trading, alpha = 1e-4, epsilon_log_decay = 0.8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode: 0, Total reward: 0.0\n",
      "Final test cumulated reward: -9.606742712019308\n",
      "Episode: 1, Total reward: -1.4362921974148704\n",
      "Final test cumulated reward: -2.3539092323693516\n",
      "Episode: 2, Total reward: 0.1880228623443433\n",
      "Final test cumulated reward: -0.12815237848971472\n",
      "Episode: 3, Total reward: -1.3340249230499552\n",
      "Final test cumulated reward: 1.1670099581450055\n",
      "Episode: 4, Total reward: 0.9184368372572782\n",
      "Final test cumulated reward: -3.1137861023853013\n",
      "Episode: 5, Total reward: 0.021425731928345848\n",
      "Final test cumulated reward: -3.1433301626624734\n",
      "Episode: 6, Total reward: 1.7642754127543125\n",
      "Final test cumulated reward: -2.9254338635114867\n",
      "Episode: 7, Total reward: 1.3411913485981077\n",
      "Final test cumulated reward: -3.0988595038845186\n",
      "Episode: 8, Total reward: -0.80187892315151\n",
      "Final test cumulated reward: -2.3202004301598773\n",
      "Episode: 9, Total reward: 2.1355239510559594\n",
      "Final test cumulated reward: -1.6150808301240964\n",
      "Episode: 10, Total reward: 1.7348151480509961\n",
      "Final test cumulated reward: 0.5834317179036823\n",
      "Episode: 11, Total reward: 2.635825407049527\n",
      "Final test cumulated reward: 1.4679389375892054\n",
      "Episode: 12, Total reward: 3.4096951805095745\n",
      "Final test cumulated reward: -0.35221203104056753\n",
      "Episode: 13, Total reward: 1.9996724579075686\n",
      "Final test cumulated reward: 0.6730837357712792\n",
      "Episode: 14, Total reward: 2.745766909566743\n",
      "Final test cumulated reward: 0.3254388321240638\n",
      "Episode: 15, Total reward: 2.1653626688528127\n",
      "Final test cumulated reward: 0.8416985447705967\n",
      "Episode: 16, Total reward: 3.3091017574937354\n",
      "Final test cumulated reward: 1.0417087633023876\n",
      "Episode: 17, Total reward: 5.801480863435024\n",
      "Final test cumulated reward: 0.49625732894835345\n",
      "Episode: 18, Total reward: 3.926298882572615\n",
      "Final test cumulated reward: 0.4351239349491841\n",
      "Episode: 19, Total reward: 3.621332131579885\n",
      "Final test cumulated reward: -1.309213772480611\n",
      "Episode: 20, Total reward: 5.549658851403261\n",
      "Final test cumulated reward: -0.20355898025018976\n",
      "Episode: 21, Total reward: 6.314074307841265\n",
      "Final test cumulated reward: -1.672670046752987\n",
      "Episode: 22, Total reward: 6.9411345315720965\n",
      "Final test cumulated reward: 0.4459390743428832\n",
      "Episode: 23, Total reward: 4.719809469659546\n",
      "Final test cumulated reward: -2.142723457890915\n",
      "Episode: 24, Total reward: 6.548553479344994\n",
      "Final test cumulated reward: -1.449374103553947\n",
      "Episode: 25, Total reward: 7.958413486280434\n",
      "Final test cumulated reward: -1.3402749391560456\n",
      "Episode: 26, Total reward: 6.941227507205584\n",
      "Final test cumulated reward: -1.251183260536876\n",
      "Episode: 27, Total reward: 7.3189998505754295\n",
      "Final test cumulated reward: -0.34847999967781584\n",
      "Episode: 28, Total reward: 6.96862566133403\n",
      "Final test cumulated reward: -1.7290833611735124\n",
      "Episode: 29, Total reward: 9.660028942880627\n",
      "Final test cumulated reward: -1.6470072967646212\n",
      "Episode: 30, Total reward: 8.257426946130904\n",
      "Final test cumulated reward: -1.3925727192935682\n",
      "Episode: 31, Total reward: 9.871328468060696\n",
      "Final test cumulated reward: -0.1408580592661094\n",
      "Episode: 32, Total reward: 9.499746777784424\n",
      "Final test cumulated reward: -0.19527166395638165\n",
      "Episode: 33, Total reward: 10.096438538382834\n",
      "Final test cumulated reward: -0.11236780541000645\n",
      "Episode: 34, Total reward: 9.096348765510909\n",
      "Final test cumulated reward: -0.10300998928750313\n",
      "Episode: 35, Total reward: 9.65616859216794\n",
      "Final test cumulated reward: 0.2509279077735347\n",
      "Episode: 36, Total reward: 10.8113566436489\n",
      "Final test cumulated reward: 0.5252839231728179\n",
      "Episode: 37, Total reward: 9.826015496782906\n",
      "Final test cumulated reward: -0.20357482191196188\n",
      "Episode: 38, Total reward: 11.815328494243397\n",
      "Final test cumulated reward: -0.9101644577625834\n",
      "Episode: 39, Total reward: 11.658580933752779\n",
      "Final test cumulated reward: 0.2106517602460772\n",
      "Episode: 40, Total reward: 11.227968206273903\n",
      "Final test cumulated reward: -1.2485055167955623\n",
      "Episode: 41, Total reward: 12.765773534389016\n",
      "Final test cumulated reward: -0.5044714198945437\n",
      "Episode: 42, Total reward: 12.4300898565204\n",
      "Final test cumulated reward: -0.2982497551877815\n",
      "Episode: 43, Total reward: 14.041640631875476\n",
      "Final test cumulated reward: -0.6690147295991816\n",
      "Episode: 44, Total reward: 13.174130386154458\n",
      "Final test cumulated reward: -0.18311629718338274\n",
      "Episode: 45, Total reward: 13.131209545914077\n",
      "Final test cumulated reward: 0.32215124955360147\n",
      "Episode: 46, Total reward: 11.710865681523275\n",
      "Final test cumulated reward: 0.6491263538282556\n",
      "Episode: 47, Total reward: 13.742274805377763\n",
      "Final test cumulated reward: 2.0296814867906767\n",
      "Episode: 48, Total reward: 13.97160826870096\n",
      "Final test cumulated reward: 1.1995731194939205\n",
      "Episode: 49, Total reward: 13.494976540951628\n",
      "Final test cumulated reward: 1.4894611920833363\n",
      "Episode: 50, Total reward: 12.419814144219256\n",
      "Final test cumulated reward: 1.7023656022331808\n",
      "Episode: 51, Total reward: 6.697451663844124\n",
      "Final test cumulated reward: -3.2967238857332726\n",
      "Episode: 52, Total reward: 0.4261046173687422\n",
      "Final test cumulated reward: 1.3147573999986182\n",
      "Episode: 53, Total reward: 24.591006718108606\n",
      "Final test cumulated reward: -13.237550769325955\n",
      "Episode: 54, Total reward: 17.578795379310744\n",
      "Final test cumulated reward: -8.68281897922234\n",
      "Episode: 55, Total reward: 32.39761570576492\n",
      "Final test cumulated reward: -14.496725042303634\n",
      "Episode: 56, Total reward: 45.96850084304125\n",
      "Final test cumulated reward: -12.349233571345115\n",
      "Episode: 57, Total reward: 1.865531865279765\n",
      "Final test cumulated reward: -5.548361487785646\n",
      "Episode: 58, Total reward: 55.96834162187894\n",
      "Final test cumulated reward: 3.7020057508916793\n",
      "Episode: 59, Total reward: 6.244504473271303\n",
      "Final test cumulated reward: -2.009915946210991\n",
      "Episode: 60, Total reward: 5.23463906606866\n",
      "Final test cumulated reward: 3.189308470960774\n",
      "Episode: 61, Total reward: 4.186502899231934\n",
      "Final test cumulated reward: 5.334732256296018\n",
      "Episode: 62, Total reward: 3.550492195829533\n",
      "Final test cumulated reward: 4.411495044906568\n",
      "Episode: 63, Total reward: 6.382156898120393\n",
      "Final test cumulated reward: 4.82320296536065\n",
      "Episode: 64, Total reward: 5.3025247767011345\n",
      "Final test cumulated reward: 5.11699419214605\n",
      "Episode: 65, Total reward: 2.507558957851458\n",
      "Final test cumulated reward: 5.251528067242571\n",
      "Episode: 66, Total reward: 3.4032499773683145\n",
      "Final test cumulated reward: 5.527886882628869\n",
      "Episode: 67, Total reward: 4.661955508511735\n",
      "Final test cumulated reward: 6.258350551304624\n",
      "Episode: 68, Total reward: 5.470846031283988\n",
      "Final test cumulated reward: 5.381833072348467\n",
      "Episode: 69, Total reward: 7.668963285089351\n",
      "Final test cumulated reward: 6.8208042296647555\n",
      "Episode: 70, Total reward: 12.8625104655481\n",
      "Final test cumulated reward: 7.750087818319819\n",
      "Episode: 71, Total reward: 9.669330568470714\n",
      "Final test cumulated reward: 6.832832952656537\n",
      "Episode: 72, Total reward: 12.958193607332365\n",
      "Final test cumulated reward: 7.157744812439003\n",
      "Episode: 73, Total reward: 14.844681307393788\n",
      "Final test cumulated reward: 6.683726828274564\n",
      "Episode: 74, Total reward: 16.62843076677847\n",
      "Final test cumulated reward: 6.1497729045564915\n",
      "Episode: 75, Total reward: 15.078406905053356\n",
      "Final test cumulated reward: 5.084884698077774\n",
      "Episode: 76, Total reward: 16.62545172762241\n",
      "Final test cumulated reward: 4.329231768769227\n",
      "Episode: 77, Total reward: 20.830995464176176\n",
      "Final test cumulated reward: 3.7898091699167473\n",
      "Episode: 78, Total reward: 23.908290839890434\n",
      "Final test cumulated reward: 0.6475578212890057\n",
      "Episode: 79, Total reward: 18.806689047264744\n",
      "Final test cumulated reward: -0.18030001664368422\n",
      "Episode: 80, Total reward: 22.3797719776351\n",
      "Final test cumulated reward: -4.913028622858747\n",
      "Episode: 81, Total reward: 33.44806483392369\n",
      "Final test cumulated reward: 23.891833021339426\n",
      "Episode: 82, Total reward: 45.241719845999306\n",
      "Final test cumulated reward: 14.005713035308483\n",
      "Episode: 83, Total reward: 43.6273655083537\n",
      "Final test cumulated reward: 9.589194825504524\n",
      "Episode: 84, Total reward: 48.665627889218484\n",
      "Final test cumulated reward: 13.591542969957274\n",
      "Episode: 85, Total reward: 44.68141239638795\n",
      "Final test cumulated reward: 17.033968014024083\n",
      "Episode: 86, Total reward: 50.206189881419256\n",
      "Final test cumulated reward: 19.793014691335554\n",
      "Episode: 87, Total reward: 39.13708760839144\n",
      "Final test cumulated reward: 17.247149367089786\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode: 88, Total reward: 44.7580995286523\n",
      "Final test cumulated reward: 17.542260827758113\n",
      "Episode: 89, Total reward: 57.58931035193526\n",
      "Final test cumulated reward: 20.20787165176139\n",
      "Episode: 90, Total reward: 50.779738769950846\n",
      "Final test cumulated reward: 18.96008992639705\n",
      "Episode: 91, Total reward: 46.36566728505326\n",
      "Final test cumulated reward: 17.45244683435516\n",
      "Episode: 92, Total reward: 49.65629949036312\n",
      "Final test cumulated reward: 17.871786612001745\n",
      "Episode: 93, Total reward: 53.60319229925774\n",
      "Final test cumulated reward: 13.926359555167322\n",
      "Episode: 94, Total reward: 52.63418033791191\n",
      "Final test cumulated reward: 16.519184884504803\n",
      "Episode: 95, Total reward: 52.93980888048402\n",
      "Final test cumulated reward: 17.760976477037353\n",
      "Episode: 96, Total reward: 48.248255815621924\n",
      "Final test cumulated reward: 19.012877644419493\n",
      "Episode: 97, Total reward: 55.359414961511725\n",
      "Final test cumulated reward: 16.30284162719575\n",
      "Episode: 98, Total reward: 43.39307593815389\n",
      "Final test cumulated reward: 15.343821245995846\n",
      "Episode: 99, Total reward: 34.79205765274776\n",
      "Final test cumulated reward: 15.754563960041876\n",
      "Episode: 100, Total reward: 35.40247688480232\n",
      "Final test cumulated reward: 10.653444625808573\n",
      "Episode: 101, Total reward: 36.28106178330361\n",
      "Final test cumulated reward: 7.131579105739561\n",
      "Episode: 102, Total reward: 40.120112638624335\n",
      "Final test cumulated reward: 2.922059725121314\n",
      "Episode: 103, Total reward: 29.54036853623428\n",
      "Final test cumulated reward: 4.031421070861242\n",
      "Episode: 104, Total reward: 34.33953704087665\n",
      "Final test cumulated reward: 5.107787819591838\n",
      "Episode: 105, Total reward: 34.30810158494037\n",
      "Final test cumulated reward: 9.874643899479087\n",
      "Episode: 106, Total reward: 50.56276355649526\n",
      "Final test cumulated reward: 0.6986792448207462\n",
      "Episode: 107, Total reward: 41.28392106109621\n",
      "Final test cumulated reward: 9.157701545632577\n",
      "Episode: 108, Total reward: 43.424558909004624\n",
      "Final test cumulated reward: -1.4983593264926642\n",
      "Episode: 109, Total reward: 49.94387011256696\n",
      "Final test cumulated reward: 10.441356143940759\n",
      "Episode: 110, Total reward: 47.05947018402268\n",
      "Final test cumulated reward: 5.148944994657567\n",
      "Episode: 111, Total reward: 59.80482849678885\n",
      "Final test cumulated reward: 2.900060318516024\n",
      "Episode: 112, Total reward: 52.80739433843885\n",
      "Final test cumulated reward: 0.8137826088370006\n",
      "Episode: 113, Total reward: 54.06175845294793\n",
      "Final test cumulated reward: 0.3003703939502559\n",
      "Episode: 114, Total reward: 57.58166617159097\n",
      "Final test cumulated reward: 0.6983787148128286\n",
      "Episode: 115, Total reward: 64.60714456894746\n",
      "Final test cumulated reward: 8.247307666551855\n",
      "Episode: 116, Total reward: 61.40007534117256\n",
      "Final test cumulated reward: 7.2434033659982715\n",
      "Episode: 117, Total reward: 60.34372587196172\n",
      "Final test cumulated reward: 5.455409973023354\n",
      "Episode: 118, Total reward: 75.69236547397931\n",
      "Final test cumulated reward: 2.9000178588000494\n",
      "Episode: 119, Total reward: 64.29107679488953\n",
      "Final test cumulated reward: -2.4487842099995665\n",
      "Episode: 120, Total reward: 71.16371379634914\n",
      "Final test cumulated reward: 2.5739006989243074\n",
      "Episode: 121, Total reward: 59.20008214883267\n",
      "Final test cumulated reward: -0.6194211715162431\n",
      "Episode: 122, Total reward: 69.41213617513877\n",
      "Final test cumulated reward: 1.4861006324841255\n",
      "Episode: 123, Total reward: 69.57311653664993\n",
      "Final test cumulated reward: -6.230830361305282\n",
      "Episode: 124, Total reward: 71.86546170381287\n",
      "Final test cumulated reward: -0.6553827300730684\n",
      "Episode: 125, Total reward: 77.20504856057612\n",
      "Final test cumulated reward: -1.0797507908593613\n",
      "Episode: 126, Total reward: 65.36037197724816\n",
      "Final test cumulated reward: 3.1541933966514346\n",
      "Episode: 127, Total reward: 84.75687109338806\n",
      "Final test cumulated reward: 11.299584301700529\n",
      "Episode: 128, Total reward: 82.55051802259695\n",
      "Final test cumulated reward: 9.174857670381941\n",
      "Episode: 129, Total reward: 87.78230660480858\n",
      "Final test cumulated reward: 9.631135802287533\n",
      "Episode: 130, Total reward: 88.8199471255671\n",
      "Final test cumulated reward: 6.354140785558499\n",
      "Episode: 131, Total reward: 102.95965129860774\n",
      "Final test cumulated reward: -6.797498015215808\n",
      "Episode: 132, Total reward: 77.12390628632807\n",
      "Final test cumulated reward: -7.112535756834163\n",
      "Episode: 133, Total reward: 86.2595256892732\n",
      "Final test cumulated reward: -7.230341773610497\n",
      "Episode: 134, Total reward: 87.35926919947153\n",
      "Final test cumulated reward: -8.963227759826607\n",
      "Episode: 135, Total reward: 100.65420577606999\n",
      "Final test cumulated reward: -10.782372002210488\n",
      "Episode: 136, Total reward: 89.84321315337912\n",
      "Final test cumulated reward: -16.053727109340027\n",
      "Episode: 137, Total reward: 95.7766336546167\n",
      "Final test cumulated reward: -18.546429453611303\n",
      "Episode: 138, Total reward: 95.71403102951594\n",
      "Final test cumulated reward: -16.597566365119626\n",
      "Episode: 139, Total reward: 103.7534876281533\n",
      "Final test cumulated reward: -14.158092638583069\n",
      "Episode: 140, Total reward: 100.14633804098126\n",
      "Final test cumulated reward: -10.935392953808073\n",
      "Episode: 141, Total reward: 103.10205855758718\n",
      "Final test cumulated reward: -11.380841953760987\n",
      "Episode: 142, Total reward: 96.91195883665563\n",
      "Final test cumulated reward: -14.283974063485708\n",
      "Episode: 143, Total reward: 105.73575309703114\n",
      "Final test cumulated reward: -16.09087673423375\n",
      "Episode: 144, Total reward: 113.06318468865017\n",
      "Final test cumulated reward: -10.860004711338293\n",
      "Episode: 145, Total reward: 102.14344314718568\n",
      "Final test cumulated reward: -14.332401713391123\n",
      "Episode: 146, Total reward: 110.2106437821136\n",
      "Final test cumulated reward: -11.690095572792629\n",
      "Episode: 147, Total reward: 113.78404902535881\n",
      "Final test cumulated reward: -11.434151100279129\n",
      "Episode: 148, Total reward: 109.37469883102742\n",
      "Final test cumulated reward: -7.989373502558704\n",
      "Episode: 149, Total reward: 113.39461725904819\n",
      "Final test cumulated reward: -5.474847184387915\n",
      "Episode: 150, Total reward: 130.14614110066262\n",
      "Final test cumulated reward: -5.036899443015636\n",
      "Episode: 151, Total reward: 127.38555780420268\n",
      "Final test cumulated reward: -1.19356714044797\n",
      "Episode: 152, Total reward: 134.3158772665588\n",
      "Final test cumulated reward: -3.4555204653311944\n",
      "Episode: 153, Total reward: 124.54621549076982\n",
      "Final test cumulated reward: -6.592441173563361\n",
      "Episode: 154, Total reward: 129.32757594069327\n",
      "Final test cumulated reward: -8.875618790382855\n",
      "Episode: 155, Total reward: 103.20671849483693\n",
      "Final test cumulated reward: -11.2565968912023\n",
      "Episode: 156, Total reward: 125.87296490827329\n",
      "Final test cumulated reward: -7.305132753637306\n",
      "Episode: 157, Total reward: 129.84138223157743\n",
      "Final test cumulated reward: -7.448277940833978\n",
      "Episode: 158, Total reward: 134.99574637934708\n",
      "Final test cumulated reward: -3.568829000827054\n",
      "Episode: 159, Total reward: 141.46118479251402\n",
      "Final test cumulated reward: -1.8313402550030249\n",
      "Episode: 160, Total reward: 157.56507513746251\n",
      "Final test cumulated reward: -0.15235348272699167\n",
      "Episode: 161, Total reward: 137.11562699771983\n",
      "Final test cumulated reward: -0.21179989334623972\n",
      "Episode: 162, Total reward: 133.156680918426\n",
      "Final test cumulated reward: -3.498419071241923\n",
      "Episode: 163, Total reward: 133.20471117798417\n",
      "Final test cumulated reward: -5.201042710150738\n",
      "Episode: 164, Total reward: 144.07076682021273\n",
      "Final test cumulated reward: -0.9070142473751603\n",
      "Episode: 165, Total reward: 128.47123381392421\n",
      "Final test cumulated reward: -6.716544380837258\n",
      "Episode: 166, Total reward: 148.41135035491692\n",
      "Final test cumulated reward: -1.2016590012176467\n",
      "Episode: 167, Total reward: 145.32679968093746\n",
      "Final test cumulated reward: -3.103216055123108\n",
      "Episode: 168, Total reward: 149.1954308056818\n",
      "Final test cumulated reward: -1.7364942204539557\n",
      "Episode: 169, Total reward: 141.31976052228964\n",
      "Final test cumulated reward: -1.1994035717348774\n",
      "Episode: 170, Total reward: 136.96725477433856\n",
      "Final test cumulated reward: -3.4563609261808574\n",
      "Episode: 171, Total reward: 136.75036176935578\n",
      "Final test cumulated reward: -0.5385157346573382\n",
      "Episode: 172, Total reward: 130.2587039542709\n",
      "Final test cumulated reward: -4.158852356111028\n",
      "Episode: 173, Total reward: 132.2464656620734\n",
      "Final test cumulated reward: 4.952222771586594\n",
      "Episode: 174, Total reward: 135.34754465118425\n",
      "Final test cumulated reward: 2.110124960784946\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode: 175, Total reward: 165.44899578900544\n",
      "Final test cumulated reward: 6.5657947874420906\n",
      "Episode: 176, Total reward: 164.28557278266885\n",
      "Final test cumulated reward: 4.7443330037935105\n",
      "Episode: 177, Total reward: 132.58203347379936\n",
      "Final test cumulated reward: -3.862892984706888\n",
      "Episode: 178, Total reward: 139.28789194596126\n",
      "Final test cumulated reward: 2.7836511577778325\n",
      "Episode: 179, Total reward: 132.15521438032826\n",
      "Final test cumulated reward: -1.642676681918494\n",
      "Episode: 180, Total reward: 136.49334180287465\n",
      "Final test cumulated reward: 0.03332748947269537\n",
      "Episode: 181, Total reward: 158.06103724556672\n",
      "Final test cumulated reward: 6.317237265460985\n",
      "Episode: 182, Total reward: 143.6181818238578\n",
      "Final test cumulated reward: 6.6050580877230045\n",
      "Episode: 183, Total reward: 146.33110352691136\n",
      "Final test cumulated reward: -0.22564763525016052\n",
      "Episode: 184, Total reward: 143.33629009470908\n",
      "Final test cumulated reward: 2.45666090372508\n",
      "Episode: 185, Total reward: 140.5884386839341\n",
      "Final test cumulated reward: 4.351939275477598\n",
      "Episode: 186, Total reward: 159.98224035085553\n",
      "Final test cumulated reward: 1.277617107805563\n",
      "Episode: 187, Total reward: 153.06117804334454\n",
      "Final test cumulated reward: -0.5713087170026433\n",
      "Episode: 188, Total reward: 161.89528164567443\n",
      "Final test cumulated reward: 5.651711247569482\n",
      "Episode: 189, Total reward: 139.07534846150492\n",
      "Final test cumulated reward: 1.3772409965378931\n",
      "Episode: 190, Total reward: 157.07606135515687\n",
      "Final test cumulated reward: 6.03246997787732\n",
      "Episode: 191, Total reward: 159.08522692290276\n",
      "Final test cumulated reward: 7.272690691336985\n",
      "Episode: 192, Total reward: 175.74551337942043\n",
      "Final test cumulated reward: 4.96955080865392\n",
      "Episode: 193, Total reward: 166.24515370762128\n",
      "Final test cumulated reward: 5.03019590027245\n",
      "Episode: 194, Total reward: 163.19434757851874\n",
      "Final test cumulated reward: 7.685509698104375\n",
      "Episode: 195, Total reward: 175.84268125218102\n",
      "Final test cumulated reward: 6.229359081036142\n",
      "Episode: 196, Total reward: 139.4624754817776\n",
      "Final test cumulated reward: 8.435433134412216\n",
      "Episode: 197, Total reward: 159.02211142055273\n",
      "Final test cumulated reward: 9.526346195508966\n",
      "Episode: 198, Total reward: 190.4661871171355\n",
      "Final test cumulated reward: 6.203508336605118\n",
      "Episode: 199, Total reward: 158.18800271973438\n",
      "Final test cumulated reward: 8.521441127098177\n",
      "Episode: 200, Total reward: 158.2887388787145\n",
      "Final test cumulated reward: 7.783486287925608\n",
      "Episode: 201, Total reward: 148.06981586652188\n",
      "Final test cumulated reward: 6.047797499085464\n",
      "Episode: 202, Total reward: 164.645903952957\n",
      "Final test cumulated reward: 7.272821152025575\n",
      "Episode: 203, Total reward: 170.7306054726549\n",
      "Final test cumulated reward: 7.70848295596399\n",
      "Episode: 204, Total reward: 192.18895150470777\n",
      "Final test cumulated reward: 5.837106160864429\n",
      "Episode: 205, Total reward: 188.55844120488504\n",
      "Final test cumulated reward: 9.268193451287711\n",
      "Episode: 206, Total reward: 183.43079524562188\n",
      "Final test cumulated reward: 3.4727328599192937\n",
      "Episode: 207, Total reward: 180.71280233525687\n",
      "Final test cumulated reward: 6.554773223202161\n",
      "Episode: 208, Total reward: 181.74653051081341\n",
      "Final test cumulated reward: 4.816468820640494\n",
      "Episode: 209, Total reward: 188.13019997808894\n",
      "Final test cumulated reward: 8.117686270894291\n",
      "Episode: 210, Total reward: 186.55905653148704\n",
      "Final test cumulated reward: 7.751689525245766\n",
      "Episode: 211, Total reward: 171.83108269688944\n",
      "Final test cumulated reward: 2.483927964815284\n",
      "Episode: 212, Total reward: 193.81764120276048\n",
      "Final test cumulated reward: 5.479439508437015\n",
      "Episode: 213, Total reward: 163.72865535341072\n",
      "Final test cumulated reward: -0.43713109522399796\n",
      "Episode: 214, Total reward: 191.23019841300277\n",
      "Final test cumulated reward: 3.709478580665577\n",
      "Episode: 215, Total reward: 180.99761178478886\n",
      "Final test cumulated reward: 9.181966609884494\n",
      "Episode: 216, Total reward: 197.59064172943943\n",
      "Final test cumulated reward: 4.403201568244387\n",
      "Episode: 217, Total reward: 177.3390453885299\n",
      "Final test cumulated reward: 7.994092558529127\n",
      "Episode: 218, Total reward: 191.78170999528047\n",
      "Final test cumulated reward: 5.009189983806389\n",
      "Episode: 219, Total reward: 201.6160262871931\n",
      "Final test cumulated reward: 4.155923731562867\n",
      "Episode: 220, Total reward: 194.57587125466637\n",
      "Final test cumulated reward: 4.976244426715796\n",
      "Episode: 221, Total reward: 190.77321369394843\n",
      "Final test cumulated reward: 7.615700084366466\n",
      "Episode: 222, Total reward: 194.69502556651375\n",
      "Final test cumulated reward: 7.810421025430582\n",
      "Episode: 223, Total reward: 167.2298856675885\n",
      "Final test cumulated reward: 7.80331513436509\n",
      "Episode: 224, Total reward: 196.4695614868295\n",
      "Final test cumulated reward: 9.640039227776498\n",
      "Episode: 225, Total reward: 174.48113873192347\n",
      "Final test cumulated reward: 11.15304501896824\n",
      "Episode: 226, Total reward: 198.17362751317597\n",
      "Final test cumulated reward: 5.624172990903482\n",
      "Episode: 227, Total reward: 205.0051819495699\n",
      "Final test cumulated reward: 2.871809535315511\n",
      "Episode: 228, Total reward: 195.84736837807947\n",
      "Final test cumulated reward: 4.0230496707250625\n",
      "Episode: 229, Total reward: 202.6659702574273\n",
      "Final test cumulated reward: 4.6892689023699825\n",
      "Episode: 230, Total reward: 208.78563271576564\n",
      "Final test cumulated reward: 9.021394871258785\n",
      "Episode: 231, Total reward: 180.65741285803355\n",
      "Final test cumulated reward: 10.606311641053944\n",
      "Episode: 232, Total reward: 203.9644239449868\n",
      "Final test cumulated reward: 8.68407497062266\n",
      "Episode: 233, Total reward: 211.97527730413705\n",
      "Final test cumulated reward: 8.430084457061927\n",
      "Episode: 234, Total reward: 196.03386269560517\n",
      "Final test cumulated reward: 3.20383731790103\n",
      "Episode: 235, Total reward: 207.82936957953962\n",
      "Final test cumulated reward: 4.245362898811473\n",
      "Episode: 236, Total reward: 207.8577692801386\n",
      "Final test cumulated reward: 7.0210768293729595\n",
      "Episode: 237, Total reward: 197.65087536035833\n",
      "Final test cumulated reward: 9.213495292110688\n",
      "Episode: 238, Total reward: 196.10176605419687\n",
      "Final test cumulated reward: 5.831128011121967\n",
      "Episode: 239, Total reward: 188.06457901173002\n",
      "Final test cumulated reward: 6.985506974799265\n",
      "Episode: 240, Total reward: 199.80590062973417\n",
      "Final test cumulated reward: 7.249895734304614\n",
      "Episode: 241, Total reward: 204.8565509384667\n",
      "Final test cumulated reward: 5.345986118171702\n",
      "Episode: 242, Total reward: 210.52663331564503\n",
      "Final test cumulated reward: 4.819938895609951\n",
      "Episode: 243, Total reward: 182.8131220706668\n",
      "Final test cumulated reward: 2.907397237127337\n",
      "Episode: 244, Total reward: 220.65072061679953\n",
      "Final test cumulated reward: 0.6759441508941842\n",
      "Episode: 245, Total reward: 214.6601559235068\n",
      "Final test cumulated reward: 2.9470600648167586\n",
      "Episode: 246, Total reward: 201.27440783030912\n",
      "Final test cumulated reward: 4.155221425638148\n",
      "Episode: 247, Total reward: 204.05347840622406\n",
      "Final test cumulated reward: 3.039383100328237\n",
      "Episode: 248, Total reward: 184.62146186236998\n",
      "Final test cumulated reward: 1.8208866116351152\n",
      "Episode: 249, Total reward: 233.32830158356353\n",
      "Final test cumulated reward: 7.695896139424641\n",
      "Episode: 250, Total reward: 223.26138867641518\n",
      "Final test cumulated reward: 6.128001135781771\n",
      "Episode: 251, Total reward: 217.5677162049924\n",
      "Final test cumulated reward: 5.34834862020633\n",
      "Episode: 252, Total reward: 210.1964658417536\n",
      "Final test cumulated reward: 9.239735632197178\n",
      "Episode: 253, Total reward: 223.28484369534192\n",
      "Final test cumulated reward: 12.834150273295206\n",
      "Episode: 254, Total reward: 214.7842787007707\n",
      "Final test cumulated reward: 12.383916835005632\n",
      "Episode: 255, Total reward: 225.96714045502867\n",
      "Final test cumulated reward: 10.204454500607032\n",
      "Episode: 256, Total reward: 204.83279623642946\n",
      "Final test cumulated reward: 5.462567431515285\n",
      "Episode: 257, Total reward: 230.4615627462337\n",
      "Final test cumulated reward: 10.248118223329422\n",
      "Episode: 258, Total reward: 200.85250814617464\n",
      "Final test cumulated reward: 8.909537790143828\n",
      "Episode: 259, Total reward: 209.20069466816585\n",
      "Final test cumulated reward: 10.953408596733812\n",
      "Episode: 260, Total reward: 205.03944188250932\n",
      "Final test cumulated reward: 12.029255320045484\n",
      "Episode: 261, Total reward: 209.40886584421983\n",
      "Final test cumulated reward: 9.960493637974647\n",
      "Episode: 262, Total reward: 214.26519827110803\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Final test cumulated reward: 10.220800556755178\n",
      "Episode: 263, Total reward: 201.68426906367583\n",
      "Final test cumulated reward: 2.059267063521761\n",
      "Episode: 264, Total reward: 223.6342202935507\n",
      "Final test cumulated reward: 9.400039831577573\n",
      "Episode: 265, Total reward: 195.38026552637035\n",
      "Final test cumulated reward: 7.4350006787734975\n",
      "Episode: 266, Total reward: 217.01933204684013\n",
      "Final test cumulated reward: 12.739603364061091\n",
      "Episode: 267, Total reward: 207.24130750825492\n",
      "Final test cumulated reward: 11.940088872382\n",
      "Episode: 268, Total reward: 220.7198625812054\n",
      "Final test cumulated reward: 11.680939265670213\n",
      "Episode: 269, Total reward: 198.47121707226074\n",
      "Final test cumulated reward: 10.715540937981176\n",
      "Episode: 270, Total reward: 229.22116738573354\n",
      "Final test cumulated reward: 12.28952312892012\n",
      "Episode: 271, Total reward: 225.87108993709256\n",
      "Final test cumulated reward: 12.98788555747023\n",
      "Episode: 272, Total reward: 209.49731753450692\n",
      "Final test cumulated reward: 8.181976503326814\n",
      "Episode: 273, Total reward: 247.0786103748067\n",
      "Final test cumulated reward: 9.612046222916742\n",
      "Episode: 274, Total reward: 220.8134990056971\n",
      "Final test cumulated reward: 11.230499752830976\n",
      "Episode: 275, Total reward: 231.4795241550777\n",
      "Final test cumulated reward: 13.534670434907419\n",
      "Episode: 276, Total reward: 228.01835315277273\n",
      "Final test cumulated reward: 10.028213666536193\n",
      "Episode: 277, Total reward: 234.3215803548966\n",
      "Final test cumulated reward: 7.53444194875676\n",
      "Episode: 278, Total reward: 228.287008602572\n",
      "Final test cumulated reward: 6.642856897861628\n",
      "Episode: 279, Total reward: 215.03813943963553\n",
      "Final test cumulated reward: 7.365130375903079\n",
      "Episode: 280, Total reward: 247.46417908261597\n",
      "Final test cumulated reward: 7.097350285932636\n",
      "Episode: 281, Total reward: 226.22780159778176\n",
      "Final test cumulated reward: 15.36111191631473\n",
      "Episode: 282, Total reward: 245.1766098604964\n",
      "Final test cumulated reward: 13.901905307803933\n",
      "Episode: 283, Total reward: 230.97324620356784\n",
      "Final test cumulated reward: 9.54033245483987\n",
      "Episode: 284, Total reward: 220.6466065603422\n",
      "Final test cumulated reward: 4.307509370911818\n",
      "Episode: 285, Total reward: 228.88038397652835\n",
      "Final test cumulated reward: 3.612205047866303\n",
      "Episode: 286, Total reward: 234.40001827476206\n",
      "Final test cumulated reward: 6.450286811099713\n",
      "Episode: 287, Total reward: 232.74056381114679\n",
      "Final test cumulated reward: 5.671820388737332\n",
      "Episode: 288, Total reward: 228.04068849679328\n",
      "Final test cumulated reward: 6.0783934267932365\n",
      "Episode: 289, Total reward: 233.02437696862037\n",
      "Final test cumulated reward: 8.060008307147534\n",
      "Episode: 290, Total reward: 253.61494341066424\n",
      "Final test cumulated reward: 9.24783609157545\n",
      "Episode: 291, Total reward: 233.85406066493877\n",
      "Final test cumulated reward: 4.727962199465166\n",
      "Episode: 292, Total reward: 257.8532747420555\n",
      "Final test cumulated reward: 4.969652224033367\n",
      "Episode: 293, Total reward: 220.9432300137014\n",
      "Final test cumulated reward: 7.011973157613339\n",
      "Episode: 294, Total reward: 242.2344902274609\n",
      "Final test cumulated reward: 2.765937214905036\n",
      "Episode: 295, Total reward: 256.5011559158944\n",
      "Final test cumulated reward: 4.189710799696046\n",
      "Episode: 296, Total reward: 243.91512909601298\n",
      "Final test cumulated reward: 6.559027197332763\n",
      "Episode: 297, Total reward: 241.2675320748477\n",
      "Final test cumulated reward: 4.166810240783347\n",
      "Episode: 298, Total reward: 258.4001580148082\n",
      "Final test cumulated reward: 3.5998622024172304\n",
      "Episode: 299, Total reward: 264.24741797921735\n",
      "Final test cumulated reward: 7.714417564819408\n",
      "Episode: 300, Total reward: 237.3172357030381\n",
      "Final test cumulated reward: 4.081966681874507\n",
      "Episode: 301, Total reward: 261.13656506492185\n",
      "Final test cumulated reward: 6.293948465462913\n",
      "Episode: 302, Total reward: 245.02331519308166\n",
      "Final test cumulated reward: 6.1118548161616975\n",
      "Episode: 303, Total reward: 272.61424068346696\n",
      "Final test cumulated reward: 3.7049879916023687\n",
      "Episode: 304, Total reward: 269.0702809232879\n",
      "Final test cumulated reward: 4.276257223093731\n",
      "Episode: 305, Total reward: 254.85241769350475\n",
      "Final test cumulated reward: 6.542040792636826\n",
      "Episode: 306, Total reward: 237.73930692745685\n",
      "Final test cumulated reward: 4.929994619572591\n",
      "Episode: 307, Total reward: 269.16786499552387\n",
      "Final test cumulated reward: 10.798889073538165\n",
      "Episode: 308, Total reward: 275.62492618710223\n",
      "Final test cumulated reward: 9.507231218773754\n",
      "Episode: 309, Total reward: 275.923525489824\n",
      "Final test cumulated reward: 6.969089136199418\n",
      "Episode: 310, Total reward: 265.2991673630551\n",
      "Final test cumulated reward: 2.79985165303037\n",
      "Episode: 311, Total reward: 269.718946066063\n",
      "Final test cumulated reward: 9.244299442489845\n",
      "Episode: 312, Total reward: 289.3084803944425\n",
      "Final test cumulated reward: 10.356299060289155\n",
      "Episode: 313, Total reward: 254.61600025630682\n",
      "Final test cumulated reward: 18.23205496221382\n",
      "Episode: 314, Total reward: 278.3015188605442\n",
      "Final test cumulated reward: 11.761241759555732\n",
      "Episode: 315, Total reward: 271.82751139244544\n",
      "Final test cumulated reward: 11.989703076869842\n",
      "Episode: 316, Total reward: 282.2885222467961\n",
      "Final test cumulated reward: 11.944450379967446\n",
      "Episode: 317, Total reward: 286.99509156370175\n",
      "Final test cumulated reward: 18.582971161831505\n",
      "Episode: 318, Total reward: 283.34074737066265\n",
      "Final test cumulated reward: 9.028608626569781\n",
      "Episode: 319, Total reward: 278.55152162260566\n",
      "Final test cumulated reward: 11.979177886184441\n",
      "Episode: 320, Total reward: 273.37611159568826\n",
      "Final test cumulated reward: 10.297819357883613\n",
      "Episode: 321, Total reward: 284.70193058661874\n",
      "Final test cumulated reward: 11.824727590127106\n",
      "Episode: 322, Total reward: 275.156191345982\n",
      "Final test cumulated reward: 18.26932679898058\n",
      "Episode: 323, Total reward: 274.516939098379\n",
      "Final test cumulated reward: 7.329340735230763\n",
      "Episode: 324, Total reward: 287.3235758458762\n",
      "Final test cumulated reward: 14.96582706085029\n",
      "Episode: 325, Total reward: 287.74797292512324\n",
      "Final test cumulated reward: 13.104964220002959\n",
      "Episode: 326, Total reward: 282.8425828008908\n",
      "Final test cumulated reward: 8.068952201431502\n",
      "Episode: 327, Total reward: 284.00953220177564\n",
      "Final test cumulated reward: 8.467877223031104\n",
      "Episode: 328, Total reward: 271.30888340382126\n",
      "Final test cumulated reward: 8.606880333740813\n",
      "Episode: 329, Total reward: 282.56720312308306\n",
      "Final test cumulated reward: 12.640719357780359\n",
      "Episode: 330, Total reward: 286.1538026762479\n",
      "Final test cumulated reward: 12.193418498496449\n",
      "Episode: 331, Total reward: 269.53025160995253\n",
      "Final test cumulated reward: 20.31501157877053\n",
      "Episode: 332, Total reward: 290.9090428653654\n",
      "Final test cumulated reward: 13.157398960472623\n",
      "Episode: 333, Total reward: 278.58667249023426\n",
      "Final test cumulated reward: 12.31727427825104\n",
      "Episode: 334, Total reward: 299.06897827328066\n",
      "Final test cumulated reward: 6.473875863799781\n",
      "Episode: 335, Total reward: 280.85888148426244\n",
      "Final test cumulated reward: 10.537217914104064\n",
      "Episode: 336, Total reward: 279.9021169695968\n",
      "Final test cumulated reward: 9.019550868628775\n",
      "Episode: 337, Total reward: 294.3661072191899\n",
      "Final test cumulated reward: 9.79124941102982\n",
      "Episode: 338, Total reward: 287.8724422967152\n",
      "Final test cumulated reward: 6.901849839191509\n",
      "Episode: 339, Total reward: 284.25117439207804\n",
      "Final test cumulated reward: 7.777500899914601\n",
      "Episode: 340, Total reward: 291.0209637961059\n",
      "Final test cumulated reward: 14.733934522650488\n",
      "Episode: 341, Total reward: 270.3898476626852\n",
      "Final test cumulated reward: 13.753282801198429\n",
      "Episode: 342, Total reward: 294.88225329552944\n",
      "Final test cumulated reward: 10.19485244870388\n",
      "Episode: 343, Total reward: 284.58848485143903\n",
      "Final test cumulated reward: 12.325310555522048\n",
      "Episode: 344, Total reward: 283.974199779678\n",
      "Final test cumulated reward: 13.393822009287872\n",
      "Episode: 345, Total reward: 290.56308845611113\n",
      "Final test cumulated reward: 3.402264921041951\n",
      "Episode: 346, Total reward: 299.778631895324\n",
      "Final test cumulated reward: 4.452247196115512\n",
      "Episode: 347, Total reward: 287.2394448659904\n",
      "Final test cumulated reward: 4.7204800268451335\n",
      "Episode: 348, Total reward: 295.06480372460527\n",
      "Final test cumulated reward: 8.573461459844223\n",
      "Episode: 349, Total reward: 288.2950525698242\n",
      "Final test cumulated reward: 1.3541835332712637\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode: 350, Total reward: 306.57850194908013\n",
      "Final test cumulated reward: 3.912644244145357\n",
      "Episode: 351, Total reward: 278.69524616088717\n",
      "Final test cumulated reward: 6.272438451980302\n",
      "Episode: 352, Total reward: 289.89934427515607\n",
      "Final test cumulated reward: 6.218685360556926\n",
      "Episode: 353, Total reward: 274.82471803706164\n",
      "Final test cumulated reward: 5.840791217408971\n",
      "Episode: 354, Total reward: 301.1090920739861\n",
      "Final test cumulated reward: 3.2233106746251243\n",
      "Episode: 355, Total reward: 297.60710333373254\n",
      "Final test cumulated reward: 2.0521967351191015\n",
      "Episode: 356, Total reward: 289.8440488962801\n",
      "Final test cumulated reward: 5.009379391617998\n",
      "Episode: 357, Total reward: 282.3693463068359\n",
      "Final test cumulated reward: -1.1059427988170156\n",
      "Episode: 358, Total reward: 285.57060923858234\n",
      "Final test cumulated reward: 3.7608561748698164\n",
      "Episode: 359, Total reward: 308.04471000021675\n",
      "Final test cumulated reward: 4.336345304875748\n",
      "Episode: 360, Total reward: 281.57976721906016\n",
      "Final test cumulated reward: 4.250105894717812\n",
      "Episode: 361, Total reward: 295.7850417793307\n",
      "Final test cumulated reward: 2.009883514099807\n",
      "Episode: 362, Total reward: 311.2997394083193\n",
      "Final test cumulated reward: 1.1403127461887559\n",
      "Episode: 363, Total reward: 303.37195979783127\n",
      "Final test cumulated reward: 0.18263910739313394\n",
      "Episode: 364, Total reward: 310.782784663394\n",
      "Final test cumulated reward: -2.1042734567355663\n",
      "Episode: 365, Total reward: 301.3461771895952\n",
      "Final test cumulated reward: -3.528505605972288\n",
      "Episode: 366, Total reward: 300.7927213145949\n",
      "Final test cumulated reward: 1.1286970167383288\n",
      "Episode: 367, Total reward: 305.98310193889\n",
      "Final test cumulated reward: -0.013693140924803116\n",
      "Episode: 368, Total reward: 286.7686924208147\n",
      "Final test cumulated reward: -2.1727746017327934\n",
      "Episode: 369, Total reward: 303.32136153923454\n",
      "Final test cumulated reward: -1.6920239897999432\n",
      "Episode: 370, Total reward: 296.8965639405993\n",
      "Final test cumulated reward: -4.114961107999021\n",
      "Episode: 371, Total reward: 283.284803473308\n",
      "Final test cumulated reward: 0.05205820734161326\n",
      "Episode: 372, Total reward: 295.2135085794835\n",
      "Final test cumulated reward: -0.0422135952158198\n",
      "Episode: 373, Total reward: 293.093768697874\n",
      "Final test cumulated reward: -0.24690312510839219\n",
      "Episode: 374, Total reward: 291.23887261361955\n",
      "Final test cumulated reward: 4.478020946468513\n",
      "Episode: 375, Total reward: 323.64896657404677\n",
      "Final test cumulated reward: 4.996751630082967\n",
      "Episode: 376, Total reward: 303.84618438832644\n",
      "Final test cumulated reward: 3.0796832752740206\n",
      "Episode: 377, Total reward: 301.9805165410206\n",
      "Final test cumulated reward: 2.3879938453608163\n",
      "Episode: 378, Total reward: 301.8452921442576\n",
      "Final test cumulated reward: 0.4337361940524159\n",
      "Episode: 379, Total reward: 301.9958202606397\n",
      "Final test cumulated reward: -3.7557295510551993\n",
      "Episode: 380, Total reward: 291.0876739428833\n",
      "Final test cumulated reward: 3.1108661419189874\n",
      "Episode: 381, Total reward: 319.434002987066\n",
      "Final test cumulated reward: 0.9212890609069201\n",
      "Episode: 382, Total reward: 297.68864195224074\n",
      "Final test cumulated reward: 3.969876515971554\n",
      "Episode: 383, Total reward: 309.2614340394693\n",
      "Final test cumulated reward: 4.309711682296308\n",
      "Episode: 384, Total reward: 304.1362421598949\n",
      "Final test cumulated reward: 2.676057645010868\n",
      "Episode: 385, Total reward: 292.91600217056214\n",
      "Final test cumulated reward: 5.179958514553941\n",
      "Episode: 386, Total reward: 308.0903573473253\n",
      "Final test cumulated reward: -0.8930330469965414\n",
      "Episode: 387, Total reward: 305.6933870144454\n",
      "Final test cumulated reward: -0.48347085191498373\n",
      "Episode: 388, Total reward: 292.96670661738165\n",
      "Final test cumulated reward: 4.535270931171868\n",
      "Episode: 389, Total reward: 293.89061645545064\n",
      "Final test cumulated reward: 1.4392839633003383\n",
      "Episode: 390, Total reward: 300.10363535037527\n",
      "Final test cumulated reward: -8.19214379539506\n",
      "Episode: 391, Total reward: 322.7269587585962\n",
      "Final test cumulated reward: -2.5800503055291784\n",
      "Episode: 392, Total reward: 315.97371128561673\n",
      "Final test cumulated reward: -8.109903920134363\n",
      "Episode: 393, Total reward: 322.47706428033257\n",
      "Final test cumulated reward: 17.12233049981569\n",
      "Episode: 394, Total reward: 270.0024667810069\n",
      "Final test cumulated reward: 10.267197033305651\n",
      "Episode: 395, Total reward: 344.20648978331565\n",
      "Final test cumulated reward: 18.80932986451894\n",
      "Episode: 396, Total reward: 321.3260808886498\n",
      "Final test cumulated reward: 13.677089231738595\n",
      "Episode: 397, Total reward: 327.2965525396226\n",
      "Final test cumulated reward: 12.514184104309674\n",
      "Episode: 398, Total reward: 330.8996752898763\n",
      "Final test cumulated reward: 3.9055670482318336\n",
      "Episode: 399, Total reward: 289.5749924157358\n",
      "Final test cumulated reward: 5.083976415483031\n"
     ]
    }
   ],
   "source": [
    "rewards_plot = []\n",
    "rewards_plot_test = []\n",
    "\n",
    "date = datetime.datetime(2017, 7, 15, 0, 0)\n",
    "date_test = datetime.datetime(2017, 8, 15, 0, 0)\n",
    "\n",
    "for e in range(NUM_EP):\n",
    "\n",
    "    state = np.reshape(env_trading.reset(date=date), [1, 200])\n",
    "    state_test = np.reshape(env_trading_test.reset(date=date_test), [1, 200])\n",
    "    score = 0\n",
    "    score_test = 0\n",
    "    \n",
    "    while(True):\n",
    "        action = agentDQN.act(state, step = e)\n",
    "        next_state, reward, done, _ = env_trading.step(action - 1) #Converting class to action\n",
    "        next_state = np.reshape(next_state, [1, 200])\n",
    "\n",
    "        agentDQN.store_step(state, action, reward, next_state, done)\n",
    "\n",
    "        state = next_state\n",
    "\n",
    "        score += reward\n",
    "\n",
    "        if done:\n",
    "            rewards_plot.append(score)\n",
    "            print(\"Episode: {}, Total reward: {}\".format(e, score))\n",
    "            break\n",
    "            \n",
    "    while(True):\n",
    "        action_test = agentDQN.act(state_test)\n",
    "        state_test, reward_test, done_test, _ = env_trading_test.step(action_test - 1) #Converting class to action\n",
    "        state_test = np.reshape(state_test, [1, 200])\n",
    "        score_test += reward_test\n",
    "        if done_test:\n",
    "            rewards_plot_test.append(score_test)\n",
    "            print(\"Final test cumulated reward: {}\".format(score_test))\n",
    "            break\n",
    "    \n",
    "    agentDQN.train()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd35aa4dcf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(rewards_plot, label = \"Trained agent\")\n",
    "plt.plot(holder_reward, label = \"Holder\")\n",
    "plt.plot(random_reward, label = \"Random\")\n",
    "plt.plot(out_reward, label = \"All out\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The DQN agent is able to have a greater cumulated reward than the 3 other agents."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Testing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd35ac4bf98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(rewards_plot_test, label = \"Trained agent (Test)\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### DDPG"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "agentDDPG = agent.DDPGAgent(env_trading, epsilon_log_decay=0.99, tau = 0.001, actor_lr = 1e-4, critic_lr = 1e-4) #Do not run after running DQN, to correct!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Defining exploration noise"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Ornstein-Uhlenbeck noise by lirnli/OpenAI-gym-solutions\n",
    "\n",
    "def UONoise():\n",
    "    theta = 0.15\n",
    "    sigma = 0.2\n",
    "    state = 0\n",
    "    while True:\n",
    "        yield state\n",
    "        state += -theta*state+sigma*np.random.randn()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode: 0, Total reward: 31.699027130917404\n",
      "Episode: 1, Total reward: 0.21151245913469413\n",
      "Episode: 2, Total reward: 47.25401252161494\n",
      "Episode: 3, Total reward: 35.19226807724327\n",
      "Episode: 4, Total reward: 28.648344017232475\n",
      "Episode: 5, Total reward: 37.73486334522609\n",
      "Episode: 6, Total reward: 31.76769425066052\n",
      "Episode: 7, Total reward: 32.97705882892705\n",
      "Episode: 8, Total reward: 39.753490376843075\n",
      "Episode: 9, Total reward: 35.23365426881059\n",
      "Episode: 10, Total reward: 32.410990539098336\n",
      "Episode: 11, Total reward: 33.866308066036716\n",
      "Episode: 12, Total reward: 42.858714095629246\n",
      "Episode: 13, Total reward: 40.15754274717436\n",
      "Episode: 14, Total reward: 40.943395950340644\n",
      "Episode: 15, Total reward: 45.306573984543185\n",
      "Episode: 16, Total reward: 26.01644161077114\n",
      "Episode: 17, Total reward: 35.61981463215337\n",
      "Episode: 18, Total reward: 32.29448559350962\n",
      "Episode: 19, Total reward: 42.29490778341962\n",
      "Episode: 20, Total reward: 20.014852204876565\n",
      "Episode: 21, Total reward: 39.15714665080839\n",
      "Episode: 22, Total reward: 31.64707988558163\n",
      "Episode: 23, Total reward: 26.816756163346852\n",
      "Episode: 24, Total reward: 35.92257701740441\n",
      "Episode: 25, Total reward: 31.78562653858193\n",
      "Episode: 26, Total reward: 36.237669081962856\n",
      "Episode: 27, Total reward: 25.50382801226763\n",
      "Episode: 28, Total reward: 30.050237139846256\n",
      "Episode: 29, Total reward: 28.30894451402788\n",
      "Episode: 30, Total reward: 19.69283469468457\n",
      "Episode: 31, Total reward: 29.641834334374828\n",
      "Episode: 32, Total reward: 26.642968247315128\n",
      "Episode: 33, Total reward: 17.791922712127686\n",
      "Episode: 34, Total reward: 29.590596426211505\n",
      "Episode: 35, Total reward: 24.814075083470176\n",
      "Episode: 36, Total reward: 25.412048303225287\n",
      "Episode: 37, Total reward: 9.797200918176381\n",
      "Episode: 38, Total reward: 29.1760606579368\n",
      "Episode: 39, Total reward: 17.333397106195253\n",
      "Episode: 40, Total reward: 11.609436354601634\n",
      "Episode: 41, Total reward: 28.746328164716545\n",
      "Episode: 42, Total reward: 21.68708215585365\n",
      "Episode: 43, Total reward: 21.492330292106793\n",
      "Episode: 44, Total reward: 21.830757093813048\n",
      "Episode: 45, Total reward: 26.641972413119746\n",
      "Episode: 46, Total reward: 36.926954087196926\n",
      "Episode: 47, Total reward: 18.991219148227398\n",
      "Episode: 48, Total reward: 31.3848966447247\n",
      "Episode: 49, Total reward: 34.44044809404724\n",
      "Episode: 50, Total reward: 31.396540011931044\n",
      "Episode: 51, Total reward: 31.564899807222734\n",
      "Episode: 52, Total reward: 32.995771214082026\n",
      "Episode: 53, Total reward: 24.19036180835714\n",
      "Episode: 54, Total reward: 32.66485067722895\n",
      "Episode: 55, Total reward: 27.546948969982736\n",
      "Episode: 56, Total reward: 20.326867209753775\n",
      "Episode: 57, Total reward: 32.3537008120618\n",
      "Episode: 58, Total reward: 1.8380613859455484\n",
      "Episode: 59, Total reward: 23.51472687479081\n",
      "Episode: 60, Total reward: 6.3987372404786935\n",
      "Episode: 61, Total reward: 8.554582130174184\n",
      "Episode: 62, Total reward: 23.85184065866922\n",
      "Episode: 63, Total reward: 21.67986570225328\n",
      "Episode: 64, Total reward: 14.495069154650913\n",
      "Episode: 65, Total reward: 27.18413851936236\n",
      "Episode: 66, Total reward: 20.426622941809573\n",
      "Episode: 67, Total reward: 21.69117097628529\n",
      "Episode: 68, Total reward: 17.462010298940392\n",
      "Episode: 69, Total reward: 29.1783931697623\n",
      "Episode: 70, Total reward: 18.911292643883773\n",
      "Episode: 71, Total reward: 19.377515712589478\n",
      "Episode: 72, Total reward: -0.4205669227073282\n",
      "Episode: 73, Total reward: 23.107443334147685\n",
      "Episode: 74, Total reward: 10.76901011911507\n",
      "Episode: 75, Total reward: 25.655729948193624\n",
      "Episode: 76, Total reward: 15.659852541015214\n",
      "Episode: 77, Total reward: 34.80792926965276\n",
      "Episode: 78, Total reward: 17.977655989030882\n",
      "Episode: 79, Total reward: 33.07094279342742\n",
      "Episode: 80, Total reward: 19.534756631985793\n",
      "Episode: 81, Total reward: 23.801809406522036\n",
      "Episode: 82, Total reward: 8.612526543033612\n",
      "Episode: 83, Total reward: 14.07082688831002\n",
      "Episode: 84, Total reward: 7.22090386076206\n",
      "Episode: 85, Total reward: 16.098204763721903\n",
      "Episode: 86, Total reward: 18.523011620995156\n",
      "Episode: 87, Total reward: 21.42239738656112\n",
      "Episode: 88, Total reward: 19.700472878049332\n",
      "Episode: 89, Total reward: 6.7730287966773615\n",
      "Episode: 90, Total reward: 21.13354051372406\n",
      "Episode: 91, Total reward: 17.998385750979836\n",
      "Episode: 92, Total reward: 22.856953341395286\n",
      "Episode: 93, Total reward: 21.590289160658333\n",
      "Episode: 94, Total reward: 17.78132688454929\n",
      "Episode: 95, Total reward: 24.01721075376728\n",
      "Episode: 96, Total reward: 21.7939538170946\n",
      "Episode: 97, Total reward: 19.798002901111477\n",
      "Episode: 98, Total reward: 19.430407481751384\n",
      "Episode: 99, Total reward: 17.597387856808922\n",
      "Episode: 100, Total reward: 20.658646601762076\n",
      "Episode: 101, Total reward: 21.1676876703376\n",
      "Episode: 102, Total reward: 19.021772539277137\n",
      "Episode: 103, Total reward: 19.208203327609038\n",
      "Episode: 104, Total reward: 20.96829401722038\n",
      "Episode: 105, Total reward: 21.56287342220005\n",
      "Episode: 106, Total reward: 26.576214583556556\n",
      "Episode: 107, Total reward: 33.89235847824713\n",
      "Episode: 108, Total reward: 33.77643002379794\n",
      "Episode: 109, Total reward: 7.91411662929303\n",
      "Episode: 110, Total reward: 35.21542679852814\n",
      "Episode: 111, Total reward: 31.389068975455768\n",
      "Episode: 112, Total reward: 3.0900556558246444\n",
      "Episode: 113, Total reward: 34.495775536007265\n",
      "Episode: 114, Total reward: 34.67820644793608\n",
      "Episode: 115, Total reward: 8.553300006219454\n",
      "Episode: 116, Total reward: 34.14907470779725\n",
      "Episode: 117, Total reward: 31.774818785424443\n",
      "Episode: 118, Total reward: 4.951119485226571\n",
      "Episode: 119, Total reward: 33.88050283590821\n",
      "Episode: 120, Total reward: 6.716695555764604\n",
      "Episode: 121, Total reward: 35.35796195323831\n",
      "Episode: 122, Total reward: 26.930043943429126\n",
      "Episode: 123, Total reward: 9.345931841875549\n",
      "Episode: 124, Total reward: 33.302624712231335\n",
      "Episode: 125, Total reward: 17.112500238878376\n",
      "Episode: 126, Total reward: 35.50091293354257\n",
      "Episode: 127, Total reward: 23.044936530793844\n",
      "Episode: 128, Total reward: 32.967076090018395\n",
      "Episode: 129, Total reward: 39.10708206469252\n",
      "Episode: 130, Total reward: 34.19401093659134\n",
      "Episode: 131, Total reward: 29.828036902838264\n",
      "Episode: 132, Total reward: 34.840333068312056\n",
      "Episode: 133, Total reward: 31.99779754365651\n",
      "Episode: 134, Total reward: 37.77734153997518\n",
      "Episode: 135, Total reward: 6.8629287044166905\n",
      "Episode: 136, Total reward: 39.99179371281065\n",
      "Episode: 137, Total reward: 22.63195360602429\n",
      "Episode: 138, Total reward: 39.24459225508872\n",
      "Episode: 139, Total reward: 32.002563654926995\n",
      "Episode: 140, Total reward: 35.26699483391842\n",
      "Episode: 141, Total reward: 36.69700069539683\n",
      "Episode: 142, Total reward: 19.17618166869209\n",
      "Episode: 143, Total reward: 46.59790640091081\n",
      "Episode: 144, Total reward: 15.88001872895183\n",
      "Episode: 145, Total reward: 32.09828312818947\n",
      "Episode: 146, Total reward: 41.5514937860234\n",
      "Episode: 147, Total reward: 28.730862149608594\n",
      "Episode: 148, Total reward: 36.11502066916247\n",
      "Episode: 149, Total reward: 22.34914694590175\n",
      "Episode: 150, Total reward: 39.8684197284945\n",
      "Episode: 151, Total reward: 30.98986090097925\n",
      "Episode: 152, Total reward: 27.495370517276758\n",
      "Episode: 153, Total reward: 38.071440539945684\n",
      "Episode: 154, Total reward: 19.332079027678038\n",
      "Episode: 155, Total reward: 40.38268333034967\n",
      "Episode: 156, Total reward: 25.68521399757064\n",
      "Episode: 157, Total reward: 30.079860156173698\n",
      "Episode: 158, Total reward: 25.320081112699057\n",
      "Episode: 159, Total reward: 33.78775725381716\n",
      "Episode: 160, Total reward: 29.623859800275\n",
      "Episode: 161, Total reward: 32.655826703387035\n",
      "Episode: 162, Total reward: 26.94232032149764\n",
      "Episode: 163, Total reward: 31.923190079240534\n",
      "Episode: 164, Total reward: 29.382630812871174\n",
      "Episode: 165, Total reward: 29.8336958001754\n",
      "Episode: 166, Total reward: 30.183115835913334\n",
      "Episode: 167, Total reward: 38.48516327871953\n",
      "Episode: 168, Total reward: 22.514565288812467\n",
      "Episode: 169, Total reward: 38.75700002717042\n",
      "Episode: 170, Total reward: 33.91626077130587\n",
      "Episode: 171, Total reward: 28.28963071355527\n",
      "Episode: 172, Total reward: 49.60469375664101\n",
      "Episode: 173, Total reward: 27.612107176074755\n",
      "Episode: 174, Total reward: 32.57672125505031\n",
      "Episode: 175, Total reward: 42.55964116532568\n",
      "Episode: 176, Total reward: 52.459249741436714\n",
      "Episode: 177, Total reward: 44.29235381910852\n",
      "Episode: 178, Total reward: 44.1690293802087\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode: 179, Total reward: 37.03753846096389\n",
      "Episode: 180, Total reward: 53.59084570147512\n",
      "Episode: 181, Total reward: 39.63136345298015\n",
      "Episode: 182, Total reward: 44.98722138297762\n",
      "Episode: 183, Total reward: 35.43539611883917\n",
      "Episode: 184, Total reward: 45.60025055856646\n",
      "Episode: 185, Total reward: 43.865001610649855\n",
      "Episode: 186, Total reward: 50.79661672601083\n",
      "Episode: 187, Total reward: 47.41353789231986\n",
      "Episode: 188, Total reward: 45.65048011720065\n",
      "Episode: 189, Total reward: 46.64621947082318\n",
      "Episode: 190, Total reward: 48.02626341986657\n",
      "Episode: 191, Total reward: 43.826127347176914\n",
      "Episode: 192, Total reward: 42.18023749197719\n",
      "Episode: 193, Total reward: 42.09944013392973\n",
      "Episode: 194, Total reward: 45.94933915333684\n",
      "Episode: 195, Total reward: 50.58511935752153\n",
      "Episode: 196, Total reward: 50.39505008374051\n",
      "Episode: 197, Total reward: 46.44019935961464\n",
      "Episode: 198, Total reward: 45.76484724066849\n",
      "Episode: 199, Total reward: 47.611308632587296\n",
      "Episode: 200, Total reward: 38.890121082746454\n",
      "Episode: 201, Total reward: 49.597868258936444\n",
      "Episode: 202, Total reward: 40.77811096548296\n",
      "Episode: 203, Total reward: 40.46935064289322\n",
      "Episode: 204, Total reward: 44.366837181687124\n",
      "Episode: 205, Total reward: 41.3205268441364\n",
      "Episode: 206, Total reward: 47.66900078014388\n",
      "Episode: 207, Total reward: 44.50276790015892\n",
      "Episode: 208, Total reward: 41.92562420812311\n",
      "Episode: 209, Total reward: 42.87679296953861\n",
      "Episode: 210, Total reward: 51.448079179868124\n",
      "Episode: 211, Total reward: 41.92876122162295\n",
      "Episode: 212, Total reward: 52.8705799438277\n",
      "Episode: 213, Total reward: 54.34571884284118\n",
      "Episode: 214, Total reward: 52.50486490131098\n",
      "Episode: 215, Total reward: 47.876006229460955\n",
      "Episode: 216, Total reward: 47.879020917407644\n",
      "Episode: 217, Total reward: 23.99574228928316\n",
      "Episode: 218, Total reward: 45.57424394666906\n",
      "Episode: 219, Total reward: 18.234043335365982\n",
      "Episode: 220, Total reward: 52.397622952538086\n",
      "Episode: 221, Total reward: 23.36193291986836\n",
      "Episode: 222, Total reward: 37.93006448729793\n",
      "Episode: 223, Total reward: 49.8455329958258\n",
      "Episode: 224, Total reward: 47.11653746060624\n",
      "Episode: 225, Total reward: 21.910751257472942\n",
      "Episode: 226, Total reward: 56.031264593656275\n",
      "Episode: 227, Total reward: 35.78199537891838\n",
      "Episode: 228, Total reward: 31.46440714175695\n",
      "Episode: 229, Total reward: 26.622861073817653\n",
      "Episode: 230, Total reward: 26.031884236409283\n",
      "Episode: 231, Total reward: 39.49841883633785\n",
      "Episode: 232, Total reward: 30.72717905807699\n",
      "Episode: 233, Total reward: 38.32220464617536\n",
      "Episode: 234, Total reward: 34.56294660130521\n",
      "Episode: 235, Total reward: 50.56885579052\n",
      "Episode: 236, Total reward: 51.49801371455433\n",
      "Episode: 237, Total reward: 43.23109759941902\n",
      "Episode: 238, Total reward: 39.72417840098752\n",
      "Episode: 239, Total reward: 59.74665245262481\n",
      "Episode: 240, Total reward: 37.08674020945653\n",
      "Episode: 241, Total reward: 46.20962235746947\n",
      "Episode: 242, Total reward: 44.73141691615123\n",
      "Episode: 243, Total reward: 41.08391534380791\n",
      "Episode: 244, Total reward: 33.37600919932585\n",
      "Episode: 245, Total reward: 49.97292585919606\n",
      "Episode: 246, Total reward: 52.07412293884798\n",
      "Episode: 247, Total reward: 55.56482056205197\n",
      "Episode: 248, Total reward: 35.07984508381737\n",
      "Episode: 249, Total reward: 45.63039237533591\n",
      "Episode: 250, Total reward: 32.709007537506395\n",
      "Episode: 251, Total reward: 36.22989170477147\n",
      "Episode: 252, Total reward: 37.592680357286845\n",
      "Episode: 253, Total reward: 45.831052584401796\n",
      "Episode: 254, Total reward: 33.42778224036969\n",
      "Episode: 255, Total reward: 46.67262688343531\n",
      "Episode: 256, Total reward: 37.754974913542185\n",
      "Episode: 257, Total reward: 47.12626466989443\n",
      "Episode: 258, Total reward: 27.464672017470924\n",
      "Episode: 259, Total reward: 44.73011378166124\n",
      "Episode: 260, Total reward: 39.530269916466644\n",
      "Episode: 261, Total reward: 49.5506426559752\n",
      "Episode: 262, Total reward: 37.56930266373552\n",
      "Episode: 263, Total reward: 33.6721705917034\n",
      "Episode: 264, Total reward: 48.87355755812787\n",
      "Episode: 265, Total reward: 46.02244627983182\n",
      "Episode: 266, Total reward: 37.29244241981986\n",
      "Episode: 267, Total reward: 45.52064315251828\n",
      "Episode: 268, Total reward: 40.47350248318469\n",
      "Episode: 269, Total reward: 37.85695300014845\n",
      "Episode: 270, Total reward: 30.852758593392497\n",
      "Episode: 271, Total reward: 47.095814290239716\n",
      "Episode: 272, Total reward: 37.36925763897617\n",
      "Episode: 273, Total reward: 33.85347146542939\n",
      "Episode: 274, Total reward: 44.29237802660667\n",
      "Episode: 275, Total reward: 44.382877227402886\n",
      "Episode: 276, Total reward: 41.1867971441146\n",
      "Episode: 277, Total reward: 41.956418177789494\n",
      "Episode: 278, Total reward: 41.84834963887667\n",
      "Episode: 279, Total reward: 35.215483081231504\n",
      "Episode: 280, Total reward: 43.086221777649534\n",
      "Episode: 281, Total reward: 40.90376068410275\n",
      "Episode: 282, Total reward: 41.276451084619055\n",
      "Episode: 283, Total reward: 40.48762195339923\n",
      "Episode: 284, Total reward: 45.33581786169138\n",
      "Episode: 285, Total reward: 44.099079981171855\n",
      "Episode: 286, Total reward: 38.347075983618765\n",
      "Episode: 287, Total reward: 37.751308257863535\n",
      "Episode: 288, Total reward: 26.904173217403905\n",
      "Episode: 289, Total reward: 44.12317541172136\n",
      "Episode: 290, Total reward: 24.512565293270047\n",
      "Episode: 291, Total reward: 43.603307956997895\n",
      "Episode: 292, Total reward: 38.23586164016664\n",
      "Episode: 293, Total reward: 41.185293535049254\n",
      "Episode: 294, Total reward: 28.980776943241665\n",
      "Episode: 295, Total reward: 48.58019327691541\n",
      "Episode: 296, Total reward: 38.240283762557716\n",
      "Episode: 297, Total reward: 56.94687052458617\n",
      "Episode: 298, Total reward: 23.207200355605423\n",
      "Episode: 299, Total reward: 29.980109147588376\n",
      "Episode: 300, Total reward: 33.58181260152498\n",
      "Episode: 301, Total reward: 43.47249322886007\n",
      "Episode: 302, Total reward: 26.460523163050812\n",
      "Episode: 303, Total reward: 45.73662579317312\n",
      "Episode: 304, Total reward: 44.051584010761935\n",
      "Episode: 305, Total reward: 46.29096241354376\n",
      "Episode: 306, Total reward: 32.27489350643476\n",
      "Episode: 307, Total reward: 45.17198777446052\n",
      "Episode: 308, Total reward: 23.41659358130934\n",
      "Episode: 309, Total reward: 42.44008203092432\n",
      "Episode: 310, Total reward: 45.37955715174137\n",
      "Episode: 311, Total reward: 35.003112556329675\n",
      "Episode: 312, Total reward: 47.34781933786257\n",
      "Episode: 313, Total reward: 51.40203296816085\n",
      "Episode: 314, Total reward: 37.6491382556711\n",
      "Episode: 315, Total reward: 39.80485811505746\n",
      "Episode: 316, Total reward: 45.51773251335786\n",
      "Episode: 317, Total reward: 29.852792472360864\n",
      "Episode: 318, Total reward: 43.08300449483531\n",
      "Episode: 319, Total reward: 50.56261242060351\n",
      "Episode: 320, Total reward: 45.659538939711965\n",
      "Episode: 321, Total reward: 41.34250170146701\n",
      "Episode: 322, Total reward: 37.465452626967675\n",
      "Episode: 323, Total reward: 47.79777221993697\n",
      "Episode: 324, Total reward: 36.9862959185481\n",
      "Episode: 325, Total reward: 39.61765300767179\n",
      "Episode: 326, Total reward: 52.9806623940724\n",
      "Episode: 327, Total reward: 43.3468371607877\n",
      "Episode: 328, Total reward: 39.47782398597187\n",
      "Episode: 329, Total reward: 30.067452537479337\n",
      "Episode: 330, Total reward: 43.735422913677525\n",
      "Episode: 331, Total reward: 23.93154788518757\n",
      "Episode: 332, Total reward: 44.0406463549562\n",
      "Episode: 333, Total reward: 44.84110271897453\n",
      "Episode: 334, Total reward: 21.21880364228682\n",
      "Episode: 335, Total reward: 45.676615184870165\n",
      "Episode: 336, Total reward: 36.04112755739672\n",
      "Episode: 337, Total reward: 39.94062077425074\n",
      "Episode: 338, Total reward: 41.65308762088567\n",
      "Episode: 339, Total reward: 42.64721957077417\n",
      "Episode: 340, Total reward: 38.014201342470294\n",
      "Episode: 341, Total reward: 55.77389331590127\n",
      "Episode: 342, Total reward: 42.46289859950308\n",
      "Episode: 343, Total reward: 37.9492830999506\n",
      "Episode: 344, Total reward: 48.02131372093134\n",
      "Episode: 345, Total reward: 45.706111461907355\n",
      "Episode: 346, Total reward: 47.13611004854333\n",
      "Episode: 347, Total reward: 42.27400509229855\n",
      "Episode: 348, Total reward: 41.165948418141426\n",
      "Episode: 349, Total reward: 49.75570486133047\n",
      "Episode: 350, Total reward: 60.41280176397514\n",
      "Episode: 351, Total reward: 53.73920891273976\n",
      "Episode: 352, Total reward: 41.14682846605042\n",
      "Episode: 353, Total reward: 49.82392920489241\n",
      "Episode: 354, Total reward: 28.37969785851399\n",
      "Episode: 355, Total reward: 54.67408342631888\n",
      "Episode: 356, Total reward: 42.84517355649893\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode: 357, Total reward: 50.34868064183293\n",
      "Episode: 358, Total reward: 46.50767360745163\n",
      "Episode: 359, Total reward: 50.90723033637798\n",
      "Episode: 360, Total reward: 38.20802046825298\n",
      "Episode: 361, Total reward: 39.15958009130234\n",
      "Episode: 362, Total reward: 45.17487875245378\n",
      "Episode: 363, Total reward: 43.85381750564441\n",
      "Episode: 364, Total reward: 52.78636618377048\n",
      "Episode: 365, Total reward: 50.312492679161956\n",
      "Episode: 366, Total reward: 38.31050836590155\n",
      "Episode: 367, Total reward: 50.880051871003225\n",
      "Episode: 368, Total reward: 53.885100293743356\n",
      "Episode: 369, Total reward: 40.54493357881536\n",
      "Episode: 370, Total reward: 41.18065019922433\n",
      "Episode: 371, Total reward: 49.16618077450667\n",
      "Episode: 372, Total reward: 37.16080164210234\n",
      "Episode: 373, Total reward: 44.65153586349615\n",
      "Episode: 374, Total reward: 35.71942279858982\n",
      "Episode: 375, Total reward: 42.74420457090024\n",
      "Episode: 376, Total reward: 45.381353554542954\n",
      "Episode: 377, Total reward: 43.922285636176234\n",
      "Episode: 378, Total reward: 36.14407661347298\n",
      "Episode: 379, Total reward: 42.582165575719735\n",
      "Episode: 380, Total reward: 54.26979468249714\n",
      "Episode: 381, Total reward: 51.73249910869096\n",
      "Episode: 382, Total reward: 47.70557938865576\n",
      "Episode: 383, Total reward: 45.742382725836976\n",
      "Episode: 384, Total reward: 47.93022085063872\n",
      "Episode: 385, Total reward: 41.96644609428481\n",
      "Episode: 386, Total reward: 44.719982304095176\n",
      "Episode: 387, Total reward: 39.12532070827545\n",
      "Episode: 388, Total reward: 49.69426595837315\n",
      "Episode: 389, Total reward: 49.47451742086426\n",
      "Episode: 390, Total reward: 43.530250364296805\n",
      "Episode: 391, Total reward: 54.77828255739153\n",
      "Episode: 392, Total reward: 47.822600303843856\n",
      "Episode: 393, Total reward: 35.96753777129325\n",
      "Episode: 394, Total reward: 51.51587003858922\n",
      "Episode: 395, Total reward: 38.39275699394297\n",
      "Episode: 396, Total reward: 50.32269123205601\n",
      "Episode: 397, Total reward: 37.226162191146834\n",
      "Episode: 398, Total reward: 54.196291960317836\n",
      "Episode: 399, Total reward: 32.669427340993316\n"
     ]
    }
   ],
   "source": [
    "date = datetime.datetime(2017, 7, 10, 0, 0)\n",
    "noise = UONoise()\n",
    "scores = []\n",
    "\n",
    "for e in range(NUM_EP):\n",
    "    state = np.reshape(env_trading.reset(date=date), 200)\n",
    "    score = 0\n",
    "    p = e/NUM_EP\n",
    "\n",
    "    while(True):\n",
    "        action = agentDDPG.actor.act([state], step = e)\n",
    "        next_state, reward, done, _ = env_trading.step(action)\n",
    "        next_state = np.reshape(next_state, 200)\n",
    "        score += reward\n",
    "        \n",
    "        agentDDPG.store_step(state, action, reward, next_state, done)\n",
    "\n",
    "        if done:\n",
    "            agentDDPG.train()\n",
    "            scores.append(score)\n",
    "            print(\"Episode: {}, Total reward: {}\".format(e, score))\n",
    "            break\n",
    "        state = next_state"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n5fKfj1pZAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd35acce5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(scores, label = \"Trained agent\")\n",
    "plt.plot(holder_reward, label = \"Holder\")\n",
    "plt.plot(random_reward, label = \"Random\")\n",
    "plt.plot(out_reward, label = \"All out\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Testing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "date = datetime.datetime(2017, 7, 15, 0, 0) # Next month\n",
    "state = np.reshape(env_trading.reset(date=date), 200)\n",
    "score = 0\n",
    "while(True):\n",
    "    action = agentDDPG.actor.act([state])\n",
    "    state, reward, done, _ = env_trading.step(action)\n",
    "    state = np.reshape(state, 200)\n",
    "    score += reward\n",
    "    if done:\n",
    "        print(\"Final cumulated reward: {}\".format(score))\n",
    "        break"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
